%{
/* Trabalho prático 3 */
#include "tp3.tab.h"
%}
digito		[0-9]
arranjo		[a-z A-Z][0-9]|[^0-9][a-z A-Z]
identificador 	[a-zA-Z][a-zA-Z0-9]*
string		(\"\")
comentario      (\/\/.*\n)
tipo		(inteiro)|(logico)|(caractere)|(real)
letra		[a-z]
%%
(?i:{letra})		{ return(LETRA); }
(?i:{tipo})		{ return(TIPO); }
(?i:algoritmo)		{ return(ALGORITMO); } 
(?i:inicio)		{ return(INICIO); } 
(?i:fimalgoritmo)	{ return(FIMALGORITMO); } 
{digito}		{ return(DIGITO); } 
(?i:procedimento)	{ return(PROCEDIMENTO); }
(?i:fimprocedimento) 	{ return(FIMPROCEDIMENTO); }  
(?i:funcao)   		{ return(FUNCAO); }
(?i:retorne)		{ return(FUNCAO); }
(?i:fimfuncao)		{ return(FIMFUNCAO); }
(?i:se)			{ return(SE); }
(?i:entao)		{ return(ENTAO); }
(?i:senao)		{ return(SENAO); }
(?i:fimse)		{ return(FIMSE); }
(?i:escolha)		{ return(ESCOLHA); } 
(?i:caso)		{ return(CASO); } 
(?i:outrocaso)		{ return(OUTROCASO); } 
(?i:fimescolha)		{ return(FIMESCOLHA); }
(?i:para)		{ return(PARA); } 
(?i:de)			{ return(DE); } 
(?i:ate)		{ return(ATE); } 
(?i:faca)		{ return(FACA); } 
(?i:fimpara) 		{ return(FIMPARA); }
(?i:passo)		{ return(PASSO); }
(?i:enquanto)		{ return(ENQUANTO); }
(?i:fimenquanto)	{ return(FIMENQUANTO); }
(?i:repita)		{ return(REPITA); }
(?i:fimrepita)		{ return(FIMREPITA); }
(?i:{identificador})	{ return(IDENTIFICADOR); }
":"			{ return(DOIS_PONTOS); } 
"\""			{ return(ASPAS); }
"("			{ return(ABRE_PARENTESE); }
"["			{ return(ABRE_COLCHETE); }
"]"			{ return(FECHA_COLCHETE); }
")"			{ return(FECHA_PARENTES); }
"+"			{ return(ADICAO); }
"-"			{ return(SUBTRACAO); }
"/"			{ return(DIVISAO); }
"\\"			{ return(CONTRABARRA); }
"*"			{ return(MULTIPLICACAO); }
">"			{ return(MAIOR); }
"<"			{ return(MENOR); }
"<="			{ return(MENOR_IGUAL); }
">="			{ return(MAIOR_IGUAL); }
"="			{ return(IGUAL); }
"<-"			{ return(ATRIBUICAO); }
"<>"			{ return(DIFERENTE); }
"%"			{ return(MOD); }
".."			{ return(INTERVALO); }
"^"			{ return(ELEVADO); }
"_"			{ return(UNDERLINE); }
{comentario}		{ return("%s\n","" ); } 
[ \t\n]+  		/* elimina branco, tab, nova linha: eat up whitespace */ 
. 			{ printf("%s\n", yytext); }
%%
